package com.guangyunl.g_objectarray;

import java.util.Scanner;

// (2)测试类 ObjectArrayTest02 的main中创建一个可以装n个学生对象的数组，并且按照学生成绩排序，显示学生信息
public class ObjectArrayTest02 {
    public static void main(String[] args) {
        // 创建一个可以装n个学生对象的数组
        System.out.print("请输入学生的个数: ");
        Scanner scanner = new Scanner(System.in);
        int quantity = scanner.nextInt();
        Student[] students =  new Student[quantity];

        // 录入学生信息
        ObjectArrayTest02 objectArrayTest02 = new ObjectArrayTest02();
        students = objectArrayTest02.createStu(students);

        // 依据成绩给学生排序
        students = objectArrayTest02.orderStu(students);
        scanner.close();

        // 显示学生信息
        System.out.println("====================");
        printStu(students);
        System.out.println("====================");

    }
    // 录入学生信息
    public Student[] createStu(Student[] arr){
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new Student();  // 确保每个元素初始化为一个新的 Student 对象
            /*
            在 createStu 方法中，每次调用 nextInt() 或 next() 时，
            Scanner 会消耗换行符或空格，
            可能会导致后续的输入问题。建
            议在使用 nextInt() 后，
            调用 scanner.nextLine() 来消耗掉换行符，以避免输入错误。
             */
            System.out.print("请输入学生姓名: ");
            arr[i].setName(scanner.next());

            System.out.print("请输入学生成绩: ");
            arr[i].setScore(scanner.nextInt());
        }
        return arr;
    }
    // 依据成绩给学生排序
    public Student[] orderStu(Student[] arr){
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1-i; j++) {
                if(arr[j].getScore() > arr[j+1].getScore()){
                    Student temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
    // 显示学生信息
    public static void printStu(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i].getName()+ " " + arr[i].getScore() + " 分");
        }
    }
}
/*
请输入学生的个数: 3
请输入学生姓名: 张三
请输入学生成绩: 60
请输入学生姓名: 李四
请输入学生成绩: 37
请输入学生姓名: 王五
请输入学生成绩: 90
====================
李四 37 分
张三 60 分
王五 90 分
====================
 */